package com.td.module.system.service.growth;

import com.td.framework.common.pojo.PageResult;
import com.td.module.system.controller.admin.growth.vo.data.GrowthModuleDataCreateReqVO;
import com.td.module.system.controller.admin.growth.vo.data.GrowthModuleDataExportReqVO;
import com.td.module.system.controller.admin.growth.vo.data.GrowthModuleDataPageReqVO;
import com.td.module.system.controller.admin.growth.vo.data.GrowthModuleDataUpdateReqVO;
import com.td.module.system.dal.dataobject.growth.GrowthModuleDataDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 生长周期 Service 接口
 *
 * @author wangxx
 */
public interface GrowthModuleDataService {

    /**
     * 创建生长周期
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createModuleData(@Valid GrowthModuleDataCreateReqVO createReqVO);

    /**
     * 更新生长周期
     *
     * @param updateReqVO 更新信息
     */
    void updateModuleData(@Valid GrowthModuleDataUpdateReqVO updateReqVO);

    /**
     * 删除生长周期
     *
     * @param id 编号
     */
    void deleteModuleData(Long id);

    /**
     * 获得生长周期
     *
     * @param id 编号
     * @return 生长周期
     */
    GrowthModuleDataDO getModuleData(Long id);

    /**
     * 获得生长周期列表
     *
     * @param ids 编号
     * @return 生长周期列表
     */
    List<GrowthModuleDataDO> getModuleDataList(Collection<Long> ids);

    /**
     * 获得生长周期分页
     *
     * @param pageReqVO 分页查询
     * @return 生长周期分页
     */
    PageResult<GrowthModuleDataDO> getModuleDataPage(GrowthModuleDataPageReqVO pageReqVO);

    /**
     * 获得生长周期列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 生长周期列表
     */
    List<GrowthModuleDataDO> getModuleDataList(GrowthModuleDataExportReqVO exportReqVO);

}
